// const express =require('express')

// const app = express()

// app.get('/user',(request,response)=>{
//     const {bb} =request.query//获取请求的查询字符串中的回调函数
//     const data ={
//         code:10000,
//         msg:'查询成功',
//         data:{
//             name:'高雅琳',
//             age:20,
//             sex:'女'
//         }

//     }
//     response.send(`${bb}(${JSON.stringify(data)})`) //响应时把获取到的回调函数调用，传的实参为数据，因为数据的格式是对象，所以要转为json字符串
// })

// app.listen(8889,()=>{
//     console.log('成功 请访问http://127.0.0.1:8889')
// })

const express = require('express')

const app =express()

app.get('/',(request,response)=>{
    const {bb} =request.query
    const data ={
        name:'gyl',
        age:18,
        sex:'female'
    }
    response.send(`${bb}(${JSON.stringify(data)})`)
})
//处理跨域请求的中间件(方便OPTIONS请求进来获取权限)
app.use((request,response,next)=>{
//1.所有的请求都允许跨域
    // response.set('Access-Control-Allow-Origin','*')
    //2.设置允许跨域的ip地址,不要带路径，只要写到端口就行
    // response.set('Access-Control-Allow-Origin','http://127.0.0.1:5500')
   
    //3.设置允许跨域的白名单,然后用includs数组方法，判断请求的来源地址是否在白名单里，如果在，就设置允许跨域
    const allowAdd = ['http://127.0.0.1:5500','http://127.0.0.1:5501','http://127.0.0.1:5502','http://127.0.0.1:5503']
    //拿到请求的来源地址，就是展示页面的地址
    // console.log(request) 发现在request.headers.origin里
    if (allowAdd.includes(request.headers.origin)){//includes数组方法，如果包含就返回true，否则返回false
        response.set('Access-Control-Allow-Origin',request.headers.origin)
    //4.因为添加了请求头token，则还需要设置第二个响应头---内容为允许设置请求头
    //5.由于添加的请求头token不属于简单请求请求头信息的字段内容，所以为复杂请求，会先发一个options预检请求，但如果把需要设置请求头的权限放在get请求里，options请求进不来，所以options请求就失败了，所以需要设置一个中间件来处理这些权限
    response.set('Access-Control-Allow-Headers','token')

    }
    next()//继续往下允许
    
})
//添加了请求头的路由
app.get('/users',(request,response)=>{
    const{userId}=request.query
    //1.所有的请求都允许跨域
    // response.set('Access-Control-Allow-Origin','*')
    //2.设置允许跨域的ip地址,不要带路径，只要写到端口就行
    // response.set('Access-Control-Allow-Origin','http://127.0.0.1:5500')
   
    //3.设置允许跨域的白名单,然后用includs数组方法，判断请求的来源地址是否在白名单里，如果在，就设置允许跨域
    // const allowAdd = ['http://127.0.0.1:5500','http://127.0.0.1:5501','http://127.0.0.1:5502','http://127.0.0.1:5503']
    //拿到请求的来源地址，就是展示页面的地址
    // console.log(request) 发现在request.headers.origin里
    // if (allowAdd.includes(request.headers.origin)){//includes数组方法，如果包含就返回true，否则返回false
    //     response.set('Access-Control-Allow-Origin',request.headers.origin)

    // }
    //4.因为添加了请求头token，则还需要设置第二个响应头---内容为允许设置请求头
    //5.由于添加的请求头token不属于简单请求请求头信息的字段内容，所以为复杂请求，会先发一个options预检请求，但如果把需要设置请求头的权限放在get请求里，options请求进不来，所以options请求就失败了，所以需要设置一个中间件来处理这些权限
    // response.set('Access-Control-Allow-Headers','token')
    if(userId=='001'){
        response.send({
            name:'gyl',
            age:18,
            sex:'female'
        })
    }
})
app.get('/user',(request,response)=>{
    const{userId}=request.query
    //1.所有的请求都允许跨域
    // response.set('Access-Control-Allow-Origin','*')
    //2.设置允许跨域的ip地址,不要带路径，只要写到端口就行
    // response.set('Access-Control-Allow-Origin','http://127.0.0.1:5500')
   
    //3.设置允许跨域的白名单,然后用includs数组方法，判断请求的来源地址是否在白名单里，如果在，就设置允许跨域
    const allowAdd = ['http://127.0.0.1:5500','http://127.0.0.1:5501','http://127.0.0.1:5502','http://127.0.0.1:5503']
    //拿到请求的来源地址，就是展示页面的地址
    // console.log(request) 发现在request.headers.origin里
    if (allowAdd.includes(request.headers.origin)){//includes数组方法，如果包含就返回true，否则返回false
        response.set('Access-Control-Allow-Origin',request.headers.origin)

    }
    if(userId=='001'){
        response.send({
            name:'gyl',
            age:18,
            sex:'female'
        })
    }
})
app.listen(7778,()=>{
    console.log('成功')
})